## Test that llvm-readobj shows proper relocation type
## names and values for ppc target.

# RUN: yaml2obj %s -o %t-ppc.o
# RUN: llvm-readobj -r --expand-relocs %t-ppc.o | FileCheck %s

# CHECK: Type: R_PPC_NONE (0)
# CHECK: Type: R_PPC_ADDR32 (1)
# CHECK: Type: R_PPC_ADDR24 (2)
# CHECK: Type: R_PPC_ADDR16 (3)
# CHECK: Type: R_PPC_ADDR16_LO (4)
# CHECK: Type: R_PPC_ADDR16_HI (5)
# CHECK: Type: R_PPC_ADDR16_HA (6)
# CHECK: Type: R_PPC_ADDR14 (7)
# CHECK: Type: R_PPC_ADDR14_BRTAKEN (8)
# CHECK: Type: R_PPC_ADDR14_BRNTAKEN (9)
# CHECK: Type: R_PPC_REL24 (10)
# CHECK: Type: R_PPC_REL14 (11)
# CHECK: Type: R_PPC_REL14_BRTAKEN (12)
# CHECK: Type: R_PPC_REL14_BRNTAKEN (13)
# CHECK: Type: R_PPC_GOT16 (14)
# CHECK: Type: R_PPC_GOT16_LO (15)
# CHECK: Type: R_PPC_GOT16_HI (16)
# CHECK: Type: R_PPC_GOT16_HA (17)
# CHECK: Type: R_PPC_PLTREL24 (18)
# CHECK: Type: R_PPC_COPY (19)
# CHECK: Type: R_PPC_GLOB_DAT (20)
# CHECK: Type: R_PPC_JMP_SLOT (21)
# CHECK: Type: R_PPC_RELATIVE (22)
# CHECK: Type: R_PPC_LOCAL24PC (23)
# CHECK: Type: R_PPC_UADDR32 (24)
# CHECK: Type: R_PPC_UADDR16 (25)
# CHECK: Type: R_PPC_REL32 (26)
# CHECK: Type: R_PPC_PLT32 (27)
# CHECK: Type: R_PPC_PLTREL32 (28)
# CHECK: Type: R_PPC_PLT16_LO (29)
# CHECK: Type: R_PPC_PLT16_HI (30)
# CHECK: Type: R_PPC_PLT16_HA (31)
# CHECK: Type: R_PPC_SDAREL16 (32)
# CHECK: Type: R_PPC_SECTOFF (33)
# CHECK: Type: R_PPC_SECTOFF_LO (34)
# CHECK: Type: R_PPC_SECTOFF_HI (35)
# CHECK: Type: R_PPC_SECTOFF_HA (36)
# CHECK: Type: R_PPC_ADDR30 (37)
# CHECK: Type: R_PPC_TLS (67)
# CHECK: Type: R_PPC_DTPMOD32 (68)
# CHECK: Type: R_PPC_TPREL16 (69)
# CHECK: Type: R_PPC_TPREL16_LO (70)
# CHECK: Type: R_PPC_TPREL16_HI (71)
# CHECK: Type: R_PPC_TPREL16_HA (72)
# CHECK: Type: R_PPC_TPREL32 (73)
# CHECK: Type: R_PPC_DTPREL16 (74)
# CHECK: Type: R_PPC_DTPREL16_LO (75)
# CHECK: Type: R_PPC_DTPREL16_HI (76)
# CHECK: Type: R_PPC_DTPREL16_HA (77)
# CHECK: Type: R_PPC_DTPREL32 (78)
# CHECK: Type: R_PPC_GOT_TLSGD16 (79)
# CHECK: Type: R_PPC_GOT_TLSGD16_LO (80)
# CHECK: Type: R_PPC_GOT_TLSGD16_HI (81)
# CHECK: Type: R_PPC_GOT_TLSGD16_HA (82)
# CHECK: Type: R_PPC_GOT_TLSLD16 (83)
# CHECK: Type: R_PPC_GOT_TLSLD16_LO (84)
# CHECK: Type: R_PPC_GOT_TLSLD16_HI (85)
# CHECK: Type: R_PPC_GOT_TLSLD16_HA (86)
# CHECK: Type: R_PPC_GOT_TPREL16 (87)
# CHECK: Type: R_PPC_GOT_TPREL16_LO (88)
# CHECK: Type: R_PPC_GOT_TPREL16_HI (89)
# CHECK: Type: R_PPC_GOT_TPREL16_HA (90)
# CHECK: Type: R_PPC_GOT_DTPREL16 (91)
# CHECK: Type: R_PPC_GOT_DTPREL16_LO (92)
# CHECK: Type: R_PPC_GOT_DTPREL16_HI (93)
# CHECK: Type: R_PPC_GOT_DTPREL16_HA (94)
# CHECK: Type: R_PPC_TLSGD (95)
# CHECK: Type: R_PPC_TLSLD (96)
# CHECK: Type: R_PPC_IRELATIVE (248)
# CHECK: Type: R_PPC_REL16 (249)
# CHECK: Type: R_PPC_REL16_LO (250)
# CHECK: Type: R_PPC_REL16_HI (251)
# CHECK: Type: R_PPC_REL16_HA (252)

--- !ELF
FileHeader:
  Class:   ELFCLASS32
  Data:    ELFDATA2MSB
  Type:    ET_REL
  Machine: EM_PPC
Sections:
  - Name: .rela.text
    Type: SHT_RELA
    Relocations:
      - Type: R_PPC_NONE
      - Type: R_PPC_ADDR32
      - Type: R_PPC_ADDR24
      - Type: R_PPC_ADDR16
      - Type: R_PPC_ADDR16_LO
      - Type: R_PPC_ADDR16_HI
      - Type: R_PPC_ADDR16_HA
      - Type: R_PPC_ADDR14
      - Type: R_PPC_ADDR14_BRTAKEN
      - Type: R_PPC_ADDR14_BRNTAKEN
      - Type: R_PPC_REL24
      - Type: R_PPC_REL14
      - Type: R_PPC_REL14_BRTAKEN
      - Type: R_PPC_REL14_BRNTAKEN
      - Type: R_PPC_GOT16
      - Type: R_PPC_GOT16_LO
      - Type: R_PPC_GOT16_HI
      - Type: R_PPC_GOT16_HA
      - Type: R_PPC_PLTREL24
      - Type: R_PPC_COPY
      - Type: R_PPC_GLOB_DAT
      - Type: R_PPC_JMP_SLOT
      - Type: R_PPC_RELATIVE
      - Type: R_PPC_LOCAL24PC
      - Type: R_PPC_UADDR32
      - Type: R_PPC_UADDR16
      - Type: R_PPC_REL32
      - Type: R_PPC_PLT32
      - Type: R_PPC_PLTREL32
      - Type: R_PPC_PLT16_LO
      - Type: R_PPC_PLT16_HI
      - Type: R_PPC_PLT16_HA
      - Type: R_PPC_SDAREL16
      - Type: R_PPC_SECTOFF
      - Type: R_PPC_SECTOFF_LO
      - Type: R_PPC_SECTOFF_HI
      - Type: R_PPC_SECTOFF_HA
      - Type: R_PPC_ADDR30
      - Type: R_PPC_TLS
      - Type: R_PPC_DTPMOD32
      - Type: R_PPC_TPREL16
      - Type: R_PPC_TPREL16_LO
      - Type: R_PPC_TPREL16_HI
      - Type: R_PPC_TPREL16_HA
      - Type: R_PPC_TPREL32
      - Type: R_PPC_DTPREL16
      - Type: R_PPC_DTPREL16_LO
      - Type: R_PPC_DTPREL16_HI
      - Type: R_PPC_DTPREL16_HA
      - Type: R_PPC_DTPREL32
      - Type: R_PPC_GOT_TLSGD16
      - Type: R_PPC_GOT_TLSGD16_LO
      - Type: R_PPC_GOT_TLSGD16_HI
      - Type: R_PPC_GOT_TLSGD16_HA
      - Type: R_PPC_GOT_TLSLD16
      - Type: R_PPC_GOT_TLSLD16_LO
      - Type: R_PPC_GOT_TLSLD16_HI
      - Type: R_PPC_GOT_TLSLD16_HA
      - Type: R_PPC_GOT_TPREL16
      - Type: R_PPC_GOT_TPREL16_LO
      - Type: R_PPC_GOT_TPREL16_HI
      - Type: R_PPC_GOT_TPREL16_HA
      - Type: R_PPC_GOT_DTPREL16
      - Type: R_PPC_GOT_DTPREL16_LO
      - Type: R_PPC_GOT_DTPREL16_HI
      - Type: R_PPC_GOT_DTPREL16_HA
      - Type: R_PPC_TLSGD
      - Type: R_PPC_TLSLD
      - Type: R_PPC_IRELATIVE
      - Type: R_PPC_REL16
      - Type: R_PPC_REL16_LO
      - Type: R_PPC_REL16_HI
      - Type: R_PPC_REL16_HA
